A host device may interface with one or more storage devices in accordance with one or more interface specifications. An example general interface specification for interfacing with a variety of storage devices includes a peripheral component interconnect express (PCIe) interface specification. The host may, in the example of PCIe, employ a logical interface referred to as non-volatile memory (NVM) express (NVMe) interface specification to further facilitate the exchange of data between the host and a particular type of storage device referred to as a solid-state drive (SSD).
NVMe allows for either the host or the SSD to define streams to facilitate efficient operation of the SSD. A stream generally refers to a collection of write data directed to one or more unique collection of physical blocks within the SSD, where such collections of physical blocks may also be referred to as a “blockset.” Blocksets may, in this respect, refer to a collection of physical blocks that are written, garbage collected, and erased as a group.
Streams may facilitate operation of the SSD by allowing for data with similar or the same velocities (or, in other words, lifetimes) to be stored to the same blockset. When data with different velocities is stored to the same blockset, the SSD may, when performing garbage collection for example, erase a portion of the blockset having high velocity (or, in other words, short lifetime) data and move the remaining portion to a different blockset, thereby increasing write amplification and reducing SSD write and read throughput. Organizing data with similar or the same velocities using streams may thereby allow the SSD to potentially reduce the impact of garbage collection (and thus write amplification) while also potentially increasing SSD read and write performance.